/**
 * 
 */
package com.sys.object.common.utils;

import java.text.SimpleDateFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.springframework.util.StringUtils;

import com.alibaba.fastjson.JSON;
import com.sys.console.pojo.Sys_Role;

/**
 * @author Administrator
 *
 */
public class Rule {

	/**************检测是否存在中文***************/
	public static String isChineseChar_test = "^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){3,19}$";
	//检验用户昵称是否正确，可以带中文
	public static String isValidName_zh_test = "^[a-zA-Z\u4e00-\u9fa50-9_-]{4,20}$";
	//检验用户密码是否正确
	public static String isValidPassword_test2 = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$";
	
	public static String isValidPassword_test = "^(?![0-9]+$)(?![a-zA-Z]+$)(?![@#$%`!^&*_]+$)[0-9A-Za-z@#$%`!^&*_]{6,16}$";
	//判断是否为图片 [.](jpg|gif|bmg)$
	//public static String is_images_test = "(?i).+?\\.(jpg|gif|bmg|png|jpge|jpeg)";
	
	public static String is_images_test = "[.](jpg|gif|bmg|png|jpge|jpeg)$";
	
	//private static String regex = "^-?{[0-9]}\d*$";
	
	
	public static boolean isChineseChar(String str){
		return isMatch(str,isChineseChar_test);
	}
	
	/**
     * 检验用户昵称是否正确，可以带中文
     * 
     * 长度为4-20个字符，由字母、中文、数字、"-"或者"_"组成。
     */
    public static boolean isValidName_zh(String obj){
    	return isMatch(obj, isValidName_zh_test);
    }
    
    /**
     * 检验用户密码是否正确
     * 
     * 密码由6-16位半角字符（字母、数字、符号）组成，区分大小写。
     */
    public static boolean isValidPassword(String obj){
    	return isMatch(obj, isValidPassword_test);
    }
    public static boolean isValidPassword2(String obj){
    	return isMatch(obj, isValidPassword_test2);
    }
    
    /**
     * 检验用户输入的手机号是否正确
     */
    public static boolean isValidMobile(String mobile){
    	//^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$
    	String reg = "^((13[0-9])|(15[0-9])|(18[0-9])|(14[0-9])|(17[0-9]))\\d{8}$";
    	return isMatch(mobile, reg);
    }
    
    
    public static String mobileNoReplace(String str){
		if(StringUtils.hasText(str)&&isValidMobile(str)){
			//char[] c = str.toCharArray();
			return str.replaceAll(str.substring(3, 7), "****");
		}
		return str;
	}
    
    /**
     * 检验用户的qq号是否正确
     */
    public static boolean isValidQQ(String qq){
    	String reg = "^[1-9][0-9]{4,10}$";
    	return isMatch(qq, reg);
    }
    
    /**
     * 验证用户的身份证号码是否合法
     */
    public static boolean isValidID(String ID){
    	String reg = "^\\d{15}|\\d{18}|\\d{17}X|\\d{17}x$";
    	return isMatch(ID, reg);
    }
    
    /**
     * 检验是否是 double类型
     */
    public static boolean isDouble(String price){
    	if(StringUtils(price)){
    		String reg = "^[0-9|\\.]+";
    		return isMatch(price, reg);
    	}
    	return false;
    }
    
    /**
     * 检验是否是数据字
     */
    public static boolean isNaN(String value){
    	
    	String reg = "^[0-9]+$";
    	return isMatch(value, reg);
    }
    
    /**
     * 校验普通电话、传真号码：可以“+”开头，除数字外，可含有“-”  
     * @param obj
     * @return
     */
    public static boolean isPhone(String obj)
    {
    	String reg = "^[+]{0,1}(\\d){1,3}[ ]?([-]?((\\d)|[ ]){1,12})+$";
    	return isMatch(obj,reg);
    }
    
    /**
     * 校验邮政编码 
     * @param obj
     * @return
     */
    public static boolean isPost(String obj)
    {
    	String reg = "^[a-zA-Z0-9 ]{3,12}$";
    	return isMatch(obj,reg);
    }
    
    /**
     * email地址 
     * @param obj
     * @return
     */
    public static boolean isEmail(String obj)
    {
    	String reg = "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$";
    	return isMatch(obj,reg);	
    }
    
    public static String getFilePath() {
        SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");
		return sdf.format(new java.util.Date());
	}
    
    /**
     * 判断字符是否为数字组成
     * @param str
     * @return
     */
    
    public static boolean isNumeric(String str){
    	if(StringUtils(str)){
    		Pattern pattern = Pattern.compile("[0-9]*");
    		return pattern.matcher(str.replaceAll("-", "")).matches();
    	}
    	return false;
     } 
    
    
    /**
    public static boolean isNumeric(String str){
    	if(StringUtils(str)){
    		Pattern pattern = Pattern.compile("[0-9]*");
    		if(pattern.matcher(str.replaceAll("-", "")).matches()){
    			if(Long.parseLong(str)>0l)
    				return true;
    		}
    			
    	}
    	return false;
     } */
	
	public static boolean isMatch(String str,String reg){
    	if (reg != "" && !"".equals(reg)) {				
    		Pattern p=Pattern.compile(reg);
    		Matcher m=p.matcher(str);
    		return m.find();
		}
    	return false;
    }
	
	public static boolean isUserName(String str){
		if(!StringUtils.hasText(str))
			return false;
		//只能数字,字母同时存在,
		//String reg = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{4,16}$";
		//纯字母或者数字,字母同时存在
		String reg = "^[A-Za-z@#$%`!^&*_]|([A-Za-z@#$%`!^&*_])([\\w]*){4,16}$";
		String reg2 = "^[^\\w\\s]+$";
		if(isMatch(str,reg2))
			return false;
		return isMatch(str,reg);
	}
	
	public static boolean isYebanUserName(String str){
		if(!StringUtils.hasText(str))
			return false;
		//只能数字,字母同时存在,
		//String reg = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{4,16}$";
		//纯字母或者数字,字母同时存在
		//String reg = "^[A-Za-z@#$%`!^&*_]|([A-Za-z])(@#$%`!^&*_)([/g]*){4,16}$";
		
		String reg = "^[^\\w\\s]+$";
		return isMatch(str,reg);
	}
	
	public static boolean isImages(String str){
		return isMatch(str,is_images_test);
	}
	
	public static boolean StringUtils(String str){
		if(StringUtils.hasText(str)){
			if(!"null".equals(str)&&!"".equals(str)){
				return true;
			}
			return false; 
		}
		return false;
	}
	
	/**
	 * 验证是否为有效日期
	 * @param date
	 * @return
	 */
	public static boolean LaissezPasser(String date){
		try{
			if(StringUtils.hasText(date)){
				Long passertime = DateUtils.convertStrToLong(date);
				if(System.currentTimeMillis()<passertime)
					return true;
			}
		}catch(Exception e){
			return false;
		}
		return false;
	}
	
	public static boolean isHttp(String obj)
    {
		if(StringUtils.hasText(obj)){
			String reg = "^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\\/])+$";
			return isMatch(obj,reg);	
		}
		return false;
    }
	
	public static void main(String[] arg){
		//System.out.println(URLEncoder.encode("13426266235"));
		//String str = "abc@163.com";
//		String username = "abcde";
//		System.out.println("555555555=========="+isHttp("731770267a46dbf9f0d0135f67590535,e9fc3921fc3c12f3c0c400e391a91e86"));
//		//String reg = "^[^\\w\\s]+$";[0-9]*
//		String str = "dsdsd{1}您的{2}有效期{3}到{4}，请到本校重新购买。";
//		//String pattern = "^{[0-9]}+$";
//		Pattern r = Pattern.compile("\\{[^}]*\\}",Pattern.CASE_INSENSITIVE);
//		//Pattern r = Pattern.compile(pattern);
//		Matcher m = r.matcher(str);
//		System.out.println(str.replaceAll("\\{[^}]*\\}", "555")+"=33333=="+m.matches());
		Sys_Role r = new Sys_Role();
		r.setRid(1);
		r.setName("aaaa");
		r.setSort(2);
		System.out.println(JSON.toJSON(r));
		
	}
}
